﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;



using Microsoft.Practices.EnterpriseLibrary.Data;
using System.Data;
using System.Data.Common;
using System.Transactions;
using log4net;

namespace CAD.WFL
{
    public class WFLMensaje
    {
        ILog logger = LogManager.GetLogger(typeof(DAOMensaje));     


    #region Attributes
        private static WFLMensaje singleton;
        #endregion

        #region Singleton
        public static WFLMensaje Instance()
        {
            if (singleton == null)
            {
                singleton = new WFLMensaje();
            }
            return singleton;
        }
        protected WFLMensaje()
        {
        }
        #endregion

        public int InsertarMensajes(DTOMensaje mensajes, List<DTOMensajexUsuario> mensajesporususario)
        {
            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
            {
                logger.Info("Transaccion Ejecutada");
                int id = DAOMensaje.Instance().Insertar(mensajes);

                foreach (DTOMensajexUsuario detalle in mensajesporususario)
                {
                    detalle.IDMensaje1.IDMensaje = id;
                    DAOMensajexUsuario.Instance().Insertar(detalle);
                }
                
                scope.Complete();
                logger.Info("Transaccion Completada");
            }
            logger.Info("Transaccion No Completada");

            return 1;
        }
        public int EliminarMensajes(List<DTOMensajexUsuario> mensajesporususario)
        {
            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
            {
                logger.Info("Transaccion Ejecutada");
                foreach (DTOMensajexUsuario detalle in mensajesporususario)
                {
                    DAOMensajexUsuario.Instance().Eliminar(detalle);
                }
                scope.Complete();
                logger.Info("Transaccion Completada");
            }
            logger.Info("Transaccion No Completada");
            return 1;
        }
    }
}
